﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace LyncServerExtension
{
    /// <summary>
    /// Helper class to represent a builder as a loadable plugin.
    /// </summary>
    public abstract class LyncResultBuilderPlugin : ILyncResultBuilderPlugin
    {
        /// <summary>
        /// Gets the id of the plugin.
        /// </summary>
        public abstract string Id { get; }

        /// <summary>
        /// Gets the version of the plugin.
        /// </summary>
        public abstract string Version { get; }

        /// <summary>
        /// Called when [load].
        /// </summary>
        /// <param name="context">The context.</param>
        public void OnLoad(PluginModel.IPluginContext context)
        {
        }

        /// <summary>
        /// Called when [unload].
        /// </summary>
        public void OnUnload()
        {
        }

        public CultureInfo Culture { get; set; }
        public abstract ILyncResult SetAuthorizedOwners(IEnumerable<LyncUser> users);
        public abstract ILyncResult SetAuthorizedDelegates(string ownerSip, IEnumerable<LyncUser> users);
        public abstract ILyncResult SetDelegates(string ownerSip, IEnumerable<LyncUser> users);
        public abstract ILyncResult SetCallForwardingDelegation(LyncCallForwardingParameter param, string state);
        public abstract ILyncResult Error(string message);
    }
}
